package com.gkt.ec.cms.activity.service;

import com.github.pagehelper.PageInfo;
import com.gkt.ec.cms.activity.model.domain.CompanyActivityEntity;
import com.gkt.ec.cms.activity.model.domain.CompanyEntity;
import com.gkt.ec.cms.activity.model.domain.CustomerActivityEntity;
import com.gkt.ec.cms.activity.model.domain.MarketActivityEntity;
import com.gkt.ec.cms.activity.model.pojo.SearchActivityVO;
import com.gkt.ec.cms.activity.model.pojo.SearchCompanyVO;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * Created by 14081593 on 2015/11/30.
 */
public interface ActivityService {

    /**
     * 查询活动详情
     * @param id
     * @return
     */
    public MarketActivityEntity getActivityDetail(Long id);

    /**
     * 添加活动
     * @param entity
     * @return
     */
    public void saveActivity(MarketActivityEntity entity);

    /**
     * 添加活动，企业关联关系
     * @param ca
     * @return
     */
    public int addCompanyActivity(CompanyActivityEntity ca);

    /**
     * 添加活动，用户关联关系
     * @param ca
     * @return
     */
    public int addCustomerActivity(CustomerActivityEntity ca);

    /**
     * 查询需要发送短信的任务列表
     * @return 活动列表
     */
    public List<MarketActivityEntity> querySendSmsActivity();

    /**
     * 更新给参与活动的客户发送短信的状态信息
     * @param customerActivityId 客户活动记录ID
     * @param smsSendStatus 发送状态 0：未发送 1：发送成功 2：发送失败
     * @param sentTime 发送时间
     */
    public void updateSendSmsCustomerStatus(Long customerActivityId,Integer smsSendStatus,Date sentTime);

    /**
     * 更新活动发送短信任务完成情况信息
     * @param activityId 活动ID
     * @param smsSendStatus  发送状态 0：未发送 1：发送成功 2：发送失败
     * @param beginTime 开始时间
     * @param endTime   结束时间
     */
    public void updateSendSmsActivityStatus(Long activityId,Integer smsSendStatus,Date beginTime,Date endTime);

    /**
     * 查询客户活动记录
     * @param activityId 活动ID
     * @return 客户活动记录列表
     */
    public List<CustomerActivityEntity> queryAllCustomerActivity(Long activityId);

    /**
     * 查询活动列表
     * @param searchCondition
     * @param offset
     * @param max
     * @return
     */
    public PageInfo<MarketActivityEntity> queryActivityList(SearchActivityVO searchCondition,int offset,int max);

    public int delActivity(HashMap paramMap);

    /**
     * 获取活动绑定的企业信息
     * @param activityId
     * @return
     */
    public List<CompanyEntity> getCompanyByActivityId(Long activityId);

    public int cancelCustomerActivity(CustomerActivityEntity ca);

    public int cancelCompanyActivity(CompanyActivityEntity ca);
}
